home *** CD-ROM | disk | FTP | other *** search
/ Windows 6-Pak - Disc 4 / Windows 6-Pak (InfoMagic) (Disc 4) (1999).ISO / Text-Chat-Scripts / pp-320m.exe / pp300 / r-reply.mrc < prev    next >
Encoding:
Text File  |  1998-08-15  |  16.5 KB  |  380 lines

  1. ; -----------------------------------------------------
  2. ; Peace and Protection (by misspai)
  3. ; -----------------------------------------------------
  4. ; CTCP reply-related events
  5. ; -----------------------------------------------------
  6. ; Self-pings (background and
  7. ; requested)
  8. ; -----------------------------------------------------
  9. on me:1:ctcpreply:º*:{
  10. %-my.address = $address
  11.   .timer905 off | .timer906 off | .timer908 off | .timer910 off
  12.   set %self.lag $_secs($calc($ticks - $2))
  13.   set %-lastselflag $calc(($ticks - $2) / 1000)
  14.   if (Q !isin $1) { disp Self-ping returned %col.info1 $+ ( $+ %self.lag $+ ) | beep 1 1 } 
  15.   if ((min isin %self.lag) || ($gettok(%self.lag,1,46) > 20)) .timer904 1 %self.ping.time2 _qsp Q
  16.   else .timer904 1 %self.ping.time1 _qsp Q
  17.   halt
  18. }
  19. on me:1:nick:.timer904 1 5 _qsp Q
  20. alias _qsp _qcr $me º $+ $1 $ticks | if (%self.lag.warn1 > 0) .timer905 1 %self.lag.warn1 _lagwarn1 | if (%self.lag.warn2 > 0) .timer906 1 %self.lag.warn2 _lagwarn2 | .timer904 off | set %_self.lag.count 0 | .timer908 0 1 _lagup | .timer910 0 $calc(%self.ping.time1 + %self.ping.time2 + 1) _qcr $!me ºQ $!ticks
  21. alias _lagwarn1 _alert HIGHSELFLAG Warning- Over  $+ %self.lag.warn1 second lag to self! Be prepared for a split or lag burst...
  22. alias _lagwarn2 _alert HUGESELFLAG Warning- Over  $+ %self.lag.warn2 second lag to self! Split, lag burst, or disconnect imminent!
  23. alias _lagup inc %_self.lag.count | set %self.lag %_self.lag.count $+ +sec
  24. ; -----------------------------------------------------
  25. ; Color scheme distro
  26. ; -----------------------------------------------------
  27. on 1:ctcpreply:P&PCOLORS *:{
  28.   _crflood
  29.   if ($2 != A) dispa Color scheme " $+ %col.info1 $+ $4- $+ " was offered to you by %col.target $+ $nick $+  but it is from an incompatible version of P&P.
  30.   else {
  31.     dispa Color scheme " $+ %col.info1 $+ $4- $+ " offered to you by %col.target $+ $nick $+ - Press %col.option $+ CtrlF3 to store in database, and /schemes to view/edit color schemes.
  32.     set %-cf3 _schget $3-
  33.   }
  34.   halt
  35. }
  36. ; -----------------------------------------------------
  37. ; Ping reply collection
  38. ; -----------------------------------------------------
  39. on 1:ctcpreply:PING*:{
  40.   _crflood
  41.   if (%.+disphalt) { unset %.+disphalt | return }
  42.   if ($1 != PING) _showreply $1-
  43.   else {
  44.     set %.pr.ping %-fping. [ $+ [ $nick ] ]
  45.     if (%.pr.ping != $null) {
  46.       if ($2 == 42) _showping %.pr.ping Valid
  47.       else _showping %.pr.ping Timed
  48.       set %-fping. [ $+ [ $nick ] ]
  49.     }
  50.     else {
  51.       if (($left($2,2) == 00) && ($2 > 0)) _showping $2 Standard
  52.       else {
  53.         if ($2 == 42) halt
  54.         if ($2 == $null) set %.pr.reply (blank reply)
  55.         else set %.pr.reply " $+ $_noparen($2-) $+ "
  56.         set %.pr.temp %col.info1 $+ %.pr.reply $+ 
  57.         if (%+ping.sorted) {
  58.           set %.pct1 $_fixncol(%col.target) $+ $nick $+
  59.           _dispping $replace($replace($replace($replace(%ping.format,&ts&,$timestamp),&sec&,%.pr.temp),&nick&,%.pct1),&type&,Invalid)
  60.         }
  61.         else {
  62.           set %.pct1 $_fixncol(%col.target) $+ $nick $+
  63.           _dispping $replace($replace($replace($remove(%ping.format,&ts&),&sec&,%.pr.temp),&nick&,%.pct1),&type&,Invalid)
  64.         }
  65.         set -u60 %-collect.avg1 %-collect.avg1
  66.         set %_last.ping $nick
  67.       }
  68.     }
  69.   }
  70.   _remcollect $nick
  71.   halt
  72. }
  73. raw 401:*:_remcollect $2
  74. on 1:part:#:_remcollect $nick
  75. on 1:kick:#:_remcollect $knick
  76. on 1:notice:*:?:{
  77.   if ((%+nickcolors) && (%nickcol.pingwaitloose)) if ( isin %-nickcol. [ $+ [ $nick ] ] ) _updncol $nick $strip(%-nickcol. [ $+ [ $nick ] ] )
  78.   set %.pr.ping %-fping. [ $+ [ $nick ] ]
  79.   if (%.pr.ping != $null) {
  80.     _showping %.pr.ping Timed
  81.     set %-fping. [ $+ [ $nick ] ]
  82.   }
  83.   .timer 1 15 _remcollect $nick
  84. }
  85. on 1:quit:_remcollect $nick
  86. alias _showping {
  87.   set %.sp.ticks $calc($ticks - $1)
  88.   set %.sp.chs $comchan($nick,0)
  89.   if ((%+nickcolors) && (%.sp.chs > 0)) {
  90.     if (%.sp.ticks >= $calc(%nickcol.lagmin * 1000)) _updncol $nick  $+ %col.nickg $strip(%-nickcol. [ $+ [ $nick ] ] )
  91.     elseif ( isin %-nickcol. [ $+ [ $nick ] ] ) _updncol $nick $strip(%-nickcol. [ $+ [ $nick ] ] )
  92.   }
  93.   inc %-collect.num
  94.   inc %-collect.total %.sp.ticks
  95.   set -u60 %-collect.avg1 $_secs($int($calc(%-collect.total / %-collect.num)))
  96.   set %-collect.avg2 %-collect.avg1
  97.   set %_last.ping $nick
  98.   if ((%+ping.sorted) && (@ isin %ping.route)) {
  99.     set %.sp.ticks $_secs(%.sp.ticks)
  100.     if (min !isin %.sp.ticks) { set %.sp.ticks $str($chr(160),2) $+ %.sp.ticks | set %.sp.ticks $right(%.sp.ticks,10) }
  101.     set %.pct1 $_fixncol(%col.info1) $+ %.sp.ticks $+
  102.     set %.pct2 $_fixncol(%col.target) $+ $nick $+
  103.     _dispping $replace($replace($replace($replace(%ping.format,&ts&,$timestamp),&sec&,%.pct1),&nick&,%.pct2),&type&,$2-)
  104.   }
  105.   else {
  106.     set %.pct1 $_fixncol(%col.info1) $+ $_secs(%.sp.ticks) $+
  107.     set %.pct2 $_fixncol(%col.target) $+ $nick $+
  108.     _dispping $replace($replace($replace($remove(%ping.format,&ts&),&sec&,%.pct1),&nick&,%.pct2),&type&,$2-)
  109.   }
  110. }
  111. alias _dispping {
  112.   set %_last.disp $1-
  113.   if ($_isopen(%ping.route) == $false) open @Ping
  114.   if (@ isin %ping.route) {
  115.     if (%+ping.to.front) window -ar @Ping
  116.     set %.dp.num $_i($line(@Ping,0))
  117.     titlebar @Ping Basket - %.dp.num $_plural(ping,%.dp.num) - Average Lag: %-collect.avg1
  118.     if (%+ping.sorted) aline -ha %col.base @Ping $1-
  119.     else {
  120.       if (%+time.stamp) aline -ha %col.base @Ping $timestamp %@c $1-
  121.       else aline -ha %col.base @Ping %@c $1-
  122.     }
  123.     sline -r %col.base @Ping $sline(@Ping,$sline(@Ping,0)).ln
  124.   }
  125.   else {
  126.     if (%+time.stamp) echo %col.base %ping.route $timestamp %@c $1-
  127.     else echo %col.base %ping.route %@c $1-
  128.   }
  129. }
  130. alias _remcollect {
  131.   if (%-collect.target != $null) {
  132.     set %-collect.target $remtok(%-collect.target,$1,32)
  133.     if (%-collect.target == $null) {
  134.       if (%+ping.sorted) _dispping 0z Bulk ping of %-collect.bulk complete. Average Lag- %col.info1 $+ %-collect.avg2 $+ 
  135.       else _dispping Bulk ping of %-collect.bulk complete. Average Lag- %col.info1 $+ %-collect.avg2 $+ 
  136.     }
  137.   }
  138. }
  139. alias avglag {
  140.   if (%-collect.target != $null) {
  141.     unset %-collect.target
  142.     if (@Ping isin $active) {
  143.       if (%+ping.sorted) _dispping 0z Bulk ping of %-collect.bulk aborted. Average Lag- %col.info1 $+ %-collect.avg2 $+ 
  144.       else _dispping Bulk ping of %-collect.bulk aborted. Average Lag- %col.info1 $+ %-collect.avg2 $+ 
  145.     }
  146.     else dispa Bulk ping of %-collect.bulk aborted. Average Lag- %col.info1 $+ %-collect.avg2 $+ 
  147.   }
  148.   else {
  149.     if (@Ping isin $active) {
  150.       if (%+ping.sorted) _dispping 0z Bulk ping average lag- %col.info1 $+ %-collect.avg2 $+ 
  151.       else _dispping Bulk ping average lag- %col.info1 $+ %-collect.avg2 $+ 
  152.     }
  153.     else dispa Bulk ping average lag- %col.info1 $+ %-collect.avg2 $+ 
  154.   }
  155.   set %.num $ial(*,0)
  156.   if (%.num > 0) {
  157.     :loop
  158.     set %.nick $ial(*,%.num).nick
  159.     if ((%+nickcolors) && ( isin %-nickcol. [ $+ [ %.nick ] ] )) _updncol %.nick $strip(%-nickcol. [ $+ [ %.nick ] ] )
  160.     if ($_vd(.num) > 0) goto loop
  161.   }
  162. }
  163. ; -----------------------------------------------------
  164. ; DCC pings
  165. ; -----------------------------------------------------
  166. #dccping on
  167. on 1:chat:PING &:{
  168.   set -u8 %_dpflood $calc( [ %_dpflood ] + 1)
  169.   if (%_dpflood > 10) {
  170.     msg =$nick DCC PING FLOOD DETECTED
  171.     close -c $nick
  172.     disps DCC chat with %col.target $+ $nick $+  closed due to detection of a DCC PING FLOOD
  173.   }
  174.   msg =$nick PONG $2
  175. }
  176. on 1:chat:PONG &:{
  177.   if (($left($2,1) != 0) || ($2 !isnum)) return
  178.   set -u8 %_dpflood $calc( [ %_dpflood ] + 1)
  179.   if (%_dpflood > 10) {
  180.     msg =$nick DCC PING FLOOD DETECTED
  181.     close -c $nick
  182.     disps DCC chat with %col.target $+ $nick $+  closed due to detection of a DCC PING FLOOD
  183.   }
  184.   _showping $2 DCC
  185. }
  186. #dccping end
  187. ; -----------------------------------------------------
  188. ; Version replies/Version pings
  189. ; -----------------------------------------------------
  190. on 1:ctcpreply:VERSION*:{
  191.   _crflood
  192.   if (%.+disphalt) { unset %.+disphalt | return }
  193.   _showreply $1-
  194.   set %.pr.ping %-fping. [ $+ [ $nick ] ]
  195.   if (($1 == VERSION) && (%.pr.ping != $null)) {
  196.     _showping %.pr.ping Version
  197.     set %-fping. [ $+ [ $nick ] ]
  198.   }
  199.   _remcollect $nick
  200.   halt
  201. }
  202. ; -----------------------------------------------------
  203. ; Other CTCP replies
  204. ; -----------------------------------------------------
  205. on 1:ctcpreply:%-track.code:halt
  206. on 1:ctcpreply:*:{
  207.   _crflood
  208.   if (%.+disphalt) { unset %.+disphalt | return }
  209.   _remcollect $nick
  210.   if (($1 == ERROR) || ($1 == ERRMSG) || ($1 == UNKNOWN)) if ($_ppcfg(misc,IgnoreERRMSGReplies)) halt
  211.   _showreply $1-
  212.   halt
  213. }
  214. alias _showreply {
  215.   if (%.+disphalt) { unset %.+disphalt | return }
  216.   set %.pr.ping %-fping. [ $+ [ $nick ] ]
  217.   if (%.pr.ping != $null) {
  218.     _showping %.pr.ping Timed
  219.     set %-fping. [ $+ [ $nick ] ]
  220.   }
  221.   else {
  222.     if ($2 == $null) dispc CTCP reply of %col.info1 $+ $_ccdef($1) $+  from %col.target $+ $nick $+  $_aopt($address,$nick,$fulladdress,$chan)
  223.     else dispc CTCP reply of %col.info1 $+ $_ccdef($1) : $_ccdef($2-) $+  from %col.target $+ $nick $+  $_aopt($address,$nick,$fulladdress,$chan)
  224.     if ((%+nickcolors) && (%nickcol.pingwaitloose)) if ( isin %-nickcol. [ $+ [ $nick ] ] ) _updncol $nick $strip(%-nickcol. [ $+ [ $nick ] ] )
  225.   }
  226. }
  227. alias _crflood {
  228.   _timersinc 10 -crepfld. $+ $site
  229.   if (%-crepfld. [ $+ [ $site ] ] > 10) {
  230.     .ignore -tnu30 $wildsite
  231.     disps %col.att $+ Ignoring CTCP/replies/notices from %col.target $+ $wildsite $+  for 30 seconds to prevent lockup. (receiving too many CTCP replies.)
  232.   }
  233. }
  234. ; -----------------------------------------------------
  235. ; Pinging aliases
  236. ; -----------------------------------------------------
  237. alias sp _qsp | disp Self-ping sent
  238. alias ps sp
  239. alias ping {
  240.   if ($1 == pong) { _pang | halt }
  241.   if ($1 == $null) {
  242.     if ($left($active,1) == =) _error Use /dcp to ping within a DCC chat, assuming the other user has P&P as well.
  243.     if (($left($active,1) == @) || ($count($active,$chr(32)) > 0)) _error Either use /ping in a channel or query window, or specify a target to ping.
  244.     set %.pg.win $active
  245.   }
  246.   else set %.pg.win $_nickseries(44,$_s2c($1-))
  247.   if (%+disp.options) dispr %.pg.win Pinging %col.target $+ %.pg.win $+  %col.option $+ (CtrlF2 to end a bulk ping)
  248.   else dispr %.pg.win Pinging %col.target $+ %.pg.win
  249.   _qc %.pg.win PING 00 $+ $ticks
  250.   _prepcollect %.pg.win
  251. }
  252. alias fakeping {
  253.   if ($1 == $null) {
  254.     if (($left($active,1) == @) || ($count($active,$chr(32)) > 0)) _error Either use /fakeping in a channel or query window, or specify a target to ping.
  255.     set %.pg.win $active
  256.   }
  257.   else set %.pg.win $_nickseries(44,$_s2c($1-))
  258.   dispr %.pg.win Fake pinging %col.target $+ %.pg.win $+  (self-timed)
  259.   _qc %.pg.win PING 42
  260.   _pingtimer %.pg.win
  261.   _prepcollect %.pg.win
  262. }
  263. alias verping {
  264.   if ($1 == $null) {
  265.     if (($left($active,1) == @) || ($count($active,$chr(32)) > 0)) _error Either use /verping in a channel or query window, or specify a target to ping.
  266.     set %.pg.win $active
  267.   }
  268.   else set %.pg.win $_nickseries(44,$_s2c($1-))
  269.   dispr %.pg.win Version pinging %col.target $+ %.pg.win $+  (self-timed)
  270.   _qc %.pg.win VERSION
  271.   _pingtimer %.pg.win
  272.   _prepcollect %.pg.win
  273. }
  274. alias fping fakeping $1-
  275. alias vping verping $1-
  276. alias dcp {
  277.   if ($left($active,1) != =) _error DCC ping should only be used in a DCC chat.
  278.   .enable #dccping
  279.   say PING 0 $+ $ticks
  280. }
  281. ; -----------------------------------------------------
  282. ; Other CTCP aliases
  283. ; -----------------------------------------------------
  284. alias version {
  285.   if ($1 == $null) {
  286.     if (%pp.addon == $null) dispa %[ $+ Peace and Protection %pp.ver by misspai $+ %] Addons: (none)
  287.     else dispa %[ $+ Peace and Protection %pp.ver by misspai $+ %] Addons: %pp.addon
  288.   }
  289.   else { set %.ctcp.win $_nickseries(44,$_s2c($1-)) | dispr $1 Requesting VERSION info from %col.target $+ %.ctcp.win |  _qc %.ctcp.win VERSION }
  290. }
  291. alias time {
  292.   if ($1 == $null) dispa It is currently %[ $+ $fulldate $+ %]
  293.   else { set %.ctcp.win $_nickseries(44,$_s2c($1-)) | dispr $1 Requesting TIME info from %col.target $+ %.ctcp.win |  _qc %.ctcp.win TIME }
  294. }
  295. alias userinfo if ($1 == $null) _quickhelp /userinfo | else { set %.ctcp.win $_nickseries(44,$_s2c($1-)) | dispr $1 Requesting USERINFO from %col.target $+ %.ctcp.win |  _qc %.ctcp.win USERINFO }
  296. alias clientinfo if ($1 == $null) _quickhelp /clientinfo | else { set %.ctcp.win $_nickseries(44,$_s2c($1-)) | dispr $1 Requesting CLIENTINFO from %col.target $+ %.ctcp.win |  _qc %.ctcp.win CLIENTINFO }
  297. alias fing if ($1 == $null) _quickhelp /fing | else { set %.ctcp.win $_nickseries(44,$_s2c($1-)) | dispr $1 Requesting FINGER info from %col.target $+ %.ctcp.win |  _qc %.ctcp.win FINGER }
  298. alias script if ($1 == $null) _quickhelp /script | else { set %.ctcp.win $_nickseries(44,$_s2c($1-)) | dispr $1 Requesting SCRIPT info from %col.target $+ %.ctcp.win |  _qc %.ctcp.win SCRIPT }
  299. alias page {
  300.   if ($1 == $null) _quickhelp /page
  301.   set %.ctcp.win $_nickseries(44,$1)
  302.   if ($2 == $null) { dispr $1 Paging %col.target $+ %.ctcp.win $+  (via CTCP) | _qc %.ctcp.win PAGE }
  303.   else { dispr $1 Paging %col.target $+ %.ctcp.win $+  (via CTCP) with message of %[ $+ $2- $+ %] | _qc %.ctcp.win PAGE %[ $+ $2- $+ %] }
  304. }
  305. alias ver version $1-
  306. alias date time $1-
  307. alias uinfo userinfo $1-
  308. alias cinfo clientinfo $1-
  309. alias ctcp {
  310.   if ($2 == $null) _quickhelp /ctcp
  311.   set %.ctcp.win $_nickseries(44,$1)
  312.   if ($3 == $null) dispr $1 CTCP of %col.info1 $+ $2 $+  sent to %col.target $+ %.ctcp.win
  313.   else dispr $1 CTCP of %col.info1 $+ $2 : $3- $+  sent to %col.target $+ %.ctcp.win
  314.   if (($2 == PING) && (($3 == $null) || (($3 isnum) && ($3 != 0)))) _qc %.ctcp.win PING 00 $+ $ticks
  315.   else _qc %.ctcp.win $2-
  316. }
  317. alias ctcpreply {
  318.   if ($2 == $null) _quickhelp /ctcpreply
  319.   set %.ctcp.win $_nickseries(44,$1)
  320.   if ($3 == $null) dispr $1 CTCP Reply of %col.info1 $+ $2 $+  sent to %col.target $+ %.ctcp.win
  321.   else dispr $1 CTCP Reply of %col.info1 $+ $2 : $3- $+  sent to %col.target $+ %.ctcp.win
  322.   _qcr %.ctcp.win $2-
  323. }
  324. ; -----------------------------------------------------
  325. ; Miscellaneous aliases and
  326. ; identifiers
  327. ; -----------------------------------------------------
  328. alias _secs if ($1 > 59999) return $int($calc($1 / 60000)) $+ min $calc($1 % 60000 / 1000) $+ sec | return $calc($1 / 1000) $+ sec
  329. alias _avglag if (%-collect.avg1 == $null) return | if (%-collect.target == $null) return á--á AvgLag: %-collect.avg1 | if ($_numtok(32,%-collect.target) < 4) return á--á AverageLag: %-collect.avg1 $+ , need pings from %-collect.target | return á--á AverageLag: %-collect.avg1 $+ , waiting on $_numtok(32,%-collect.target) pings
  330. alias _pingtimer {
  331.   set %.pt.start $ticks
  332.   set %.pt.num $_numtok(44,$1)
  333.   :loop
  334.   set %.pt.targ $gettok($1,%.pt.num,44)
  335.   if ($chan(%.pt.targ) == %.pt.targ) {
  336.     set %.pt.chan $nick(%.pt.targ,0)
  337.     :loop2 | set %.pt.nick $nick(%.pt.targ,%.pt.chan) | if ((%.pt.nick != X) && (%.pt.nick != W)) set %-fping. [ $+ [ %.pt.nick ] ] %.pt.start | if ($_vd(.pt.chan) > 0) goto loop2
  338.   }
  339.   else set %-fping. [ $+ [ %.pt.targ ] ] %.pt.start
  340.   if ($_vd(.pt.num) > 0) goto loop
  341. }
  342. alias _prepcollect {
  343.   unset %-collect.*
  344.   unset %.pt.hit
  345.   set %.pt.num $_numtok(44,$1)
  346.   :loop
  347.   set %.pt.targ $gettok($1,%.pt.num,44)
  348.   if ($chan(%.pt.targ) == %.pt.targ) {
  349.     set %.pt.chan $nick(%.pt.targ,0)
  350.     :loop2
  351.     set %.pt.nick $nick(%.pt.targ,%.pt.chan)
  352.     if ((%.pt.nick != $me) && (%.pt.nick != X) && (%.pt.nick != W)) {
  353.       set %-collect.target %-collect.target %.pt.nick
  354.       if (%+nickcolors) _updncol %.pt.nick  $+ %col.nickw $strip(%-nickcol. [ $+ [ %.pt.nick ] ] )
  355.       inc %.pt.hit
  356.     }
  357.     if ($_vd(.pt.chan) > 0) goto loop2
  358.   }
  359.   else {
  360.     set %-collect.target %-collect.target %.pt.targ
  361.     if (%+nickcolors) _updncol %.pt.targ  $+ %col.nickw $strip(%-nickcol. [ $+ [ %.pt.targ ] ] )
  362.     inc %.pt.hit
  363.   }
  364.   if ($_vd(.pt.num) > 0) goto loop
  365.   if ($_numtok(32,%-collect.target) == 1) unset %-collect.target
  366.   else {
  367.     if ($_numtok(44,$1) == 1) set %-collect.bulk %col.target $+ $gettok($1,1,44) $+ 
  368.     else set %-collect.bulk %col.target $+ %.pt.hit $+  targets
  369.   }
  370. }
  371. on 1:close:@Ping:unset %-collect.avg1
  372. on 1:close:@Banlist:{
  373.   if ((%_bantoadd != $null) || (%_bantorem != $null)) {
  374.     if ($me !isop %_banchan) { unset %_ban* | .timer911 off | _error You are not an op on %_banchan $+ , banlist modifications canceled. }
  375.     if (%_bantorem != $null) _massmode %_banchan -b %_bantorem
  376.     if (%_bantoadd != $null) _massmode %_banchan +b %_bantoadd
  377.   }
  378.   unset %_ban*
  379. }
  380.